{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Machine Learning with K Nearest Neighbors\n",
    "\n",
    "In this micro-project, we'll use the KNN algorithm to classify instances from a fake dataset into one or the other target class."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "df = pd.read_csv('data/KNN_Project_Data')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>XVPM</th>\n",
       "      <th>GWYH</th>\n",
       "      <th>TRAT</th>\n",
       "      <th>TLLZ</th>\n",
       "      <th>IGGA</th>\n",
       "      <th>HYKR</th>\n",
       "      <th>EDFS</th>\n",
       "      <th>GUUB</th>\n",
       "      <th>MGJM</th>\n",
       "      <th>JHZC</th>\n",
       "      <th>TARGET CLASS</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1636.670614</td>\n",
       "      <td>817.988525</td>\n",
       "      <td>2565.995189</td>\n",
       "      <td>358.347163</td>\n",
       "      <td>550.417491</td>\n",
       "      <td>1618.870897</td>\n",
       "      <td>2147.641254</td>\n",
       "      <td>330.727893</td>\n",
       "      <td>1494.878631</td>\n",
       "      <td>845.136088</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1013.402760</td>\n",
       "      <td>577.587332</td>\n",
       "      <td>2644.141273</td>\n",
       "      <td>280.428203</td>\n",
       "      <td>1161.873391</td>\n",
       "      <td>2084.107872</td>\n",
       "      <td>853.404981</td>\n",
       "      <td>447.157619</td>\n",
       "      <td>1193.032521</td>\n",
       "      <td>861.081809</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1300.035501</td>\n",
       "      <td>820.518697</td>\n",
       "      <td>2025.854469</td>\n",
       "      <td>525.562292</td>\n",
       "      <td>922.206261</td>\n",
       "      <td>2552.355407</td>\n",
       "      <td>818.676686</td>\n",
       "      <td>845.491492</td>\n",
       "      <td>1968.367513</td>\n",
       "      <td>1647.186291</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1059.347542</td>\n",
       "      <td>1066.866418</td>\n",
       "      <td>612.000041</td>\n",
       "      <td>480.827789</td>\n",
       "      <td>419.467495</td>\n",
       "      <td>685.666983</td>\n",
       "      <td>852.867810</td>\n",
       "      <td>341.664784</td>\n",
       "      <td>1154.391368</td>\n",
       "      <td>1450.935357</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1018.340526</td>\n",
       "      <td>1313.679056</td>\n",
       "      <td>950.622661</td>\n",
       "      <td>724.742174</td>\n",
       "      <td>843.065903</td>\n",
       "      <td>1370.554164</td>\n",
       "      <td>905.469453</td>\n",
       "      <td>658.118202</td>\n",
       "      <td>539.459350</td>\n",
       "      <td>1899.850792</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          XVPM         GWYH         TRAT        TLLZ         IGGA  \\\n",
       "0  1636.670614   817.988525  2565.995189  358.347163   550.417491   \n",
       "1  1013.402760   577.587332  2644.141273  280.428203  1161.873391   \n",
       "2  1300.035501   820.518697  2025.854469  525.562292   922.206261   \n",
       "3  1059.347542  1066.866418   612.000041  480.827789   419.467495   \n",
       "4  1018.340526  1313.679056   950.622661  724.742174   843.065903   \n",
       "\n",
       "          HYKR         EDFS        GUUB         MGJM         JHZC  \\\n",
       "0  1618.870897  2147.641254  330.727893  1494.878631   845.136088   \n",
       "1  2084.107872   853.404981  447.157619  1193.032521   861.081809   \n",
       "2  2552.355407   818.676686  845.491492  1968.367513  1647.186291   \n",
       "3   685.666983   852.867810  341.664784  1154.391368  1450.935357   \n",
       "4  1370.554164   905.469453  658.118202   539.459350  1899.850792   \n",
       "\n",
       "   TARGET CLASS  \n",
       "0             0  \n",
       "1             1  \n",
       "2             1  \n",
       "3             0  \n",
       "4             0  "
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Standardizing the Variables\n",
    "\n",
    "Because of the type of data we're dealing with, it's important to standardize the variables before training our model. Skewed distribution of variables makes it harder for our model to deal with it."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import StandardScaler"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "scaler = StandardScaler()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['XVPM', 'GWYH', 'TRAT', 'TLLZ', 'IGGA', 'HYKR', 'EDFS', 'GUUB', 'MGJM',\n",
       "       'JHZC', 'TARGET CLASS'],\n",
       "      dtype='object')"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.columns"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Of course, we don't need to scale the target class, so we'll ignore that during scaler fitting."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "StandardScaler(copy=True, with_mean=True, with_std=True)"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "scaler.fit(df.drop('TARGET CLASS',axis=1))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we'll use the .transform() method to transform the features to a scaled version."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "scaled_feats = scaler.transform(df.drop('TARGET CLASS',axis=1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "#Converting the scaled features to a dataframe\n",
    "scaled_df = pd.DataFrame(scaled_feats)\n",
    "scaled_df.columns =['XVPM', 'GWYH', 'TRAT', 'TLLZ', 'IGGA', 'HYKR', 'EDFS', 'GUUB', 'MGJM',\n",
    "       'JHZC']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>XVPM</th>\n",
       "      <th>GWYH</th>\n",
       "      <th>TRAT</th>\n",
       "      <th>TLLZ</th>\n",
       "      <th>IGGA</th>\n",
       "      <th>HYKR</th>\n",
       "      <th>EDFS</th>\n",
       "      <th>GUUB</th>\n",
       "      <th>MGJM</th>\n",
       "      <th>JHZC</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.568522</td>\n",
       "      <td>-0.443435</td>\n",
       "      <td>1.619808</td>\n",
       "      <td>-0.958255</td>\n",
       "      <td>-1.128481</td>\n",
       "      <td>0.138336</td>\n",
       "      <td>0.980493</td>\n",
       "      <td>-0.932794</td>\n",
       "      <td>1.008313</td>\n",
       "      <td>-1.069627</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-0.112376</td>\n",
       "      <td>-1.056574</td>\n",
       "      <td>1.741918</td>\n",
       "      <td>-1.504220</td>\n",
       "      <td>0.640009</td>\n",
       "      <td>1.081552</td>\n",
       "      <td>-1.182663</td>\n",
       "      <td>-0.461864</td>\n",
       "      <td>0.258321</td>\n",
       "      <td>-1.041546</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.660647</td>\n",
       "      <td>-0.436981</td>\n",
       "      <td>0.775793</td>\n",
       "      <td>0.213394</td>\n",
       "      <td>-0.053171</td>\n",
       "      <td>2.030872</td>\n",
       "      <td>-1.240707</td>\n",
       "      <td>1.149298</td>\n",
       "      <td>2.184784</td>\n",
       "      <td>0.342811</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.011533</td>\n",
       "      <td>0.191324</td>\n",
       "      <td>-1.433473</td>\n",
       "      <td>-0.100053</td>\n",
       "      <td>-1.507223</td>\n",
       "      <td>-1.753632</td>\n",
       "      <td>-1.183561</td>\n",
       "      <td>-0.888557</td>\n",
       "      <td>0.162310</td>\n",
       "      <td>-0.002793</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>-0.099059</td>\n",
       "      <td>0.820815</td>\n",
       "      <td>-0.904346</td>\n",
       "      <td>1.609015</td>\n",
       "      <td>-0.282065</td>\n",
       "      <td>-0.365099</td>\n",
       "      <td>-1.095644</td>\n",
       "      <td>0.391419</td>\n",
       "      <td>-1.365603</td>\n",
       "      <td>0.787762</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       XVPM      GWYH      TRAT      TLLZ      IGGA      HYKR      EDFS  \\\n",
       "0  1.568522 -0.443435  1.619808 -0.958255 -1.128481  0.138336  0.980493   \n",
       "1 -0.112376 -1.056574  1.741918 -1.504220  0.640009  1.081552 -1.182663   \n",
       "2  0.660647 -0.436981  0.775793  0.213394 -0.053171  2.030872 -1.240707   \n",
       "3  0.011533  0.191324 -1.433473 -0.100053 -1.507223 -1.753632 -1.183561   \n",
       "4 -0.099059  0.820815 -0.904346  1.609015 -0.282065 -0.365099 -1.095644   \n",
       "\n",
       "       GUUB      MGJM      JHZC  \n",
       "0 -0.932794  1.008313 -1.069627  \n",
       "1 -0.461864  0.258321 -1.041546  \n",
       "2  1.149298  2.184784  0.342811  \n",
       "3 -0.888557  0.162310 -0.002793  \n",
       "4  0.391419 -1.365603  0.787762  "
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "scaled_df.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Model Building"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#Begin with splitting the data into training and test sets\n",
    "from sklearn.model_selection import train_test_split"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "X = scaled_df\n",
    "y = df['TARGET CLASS']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=101)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Fitting our model."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from sklearn.neighbors import KNeighborsClassifier"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "knn = KNeighborsClassifier(n_neighbors=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
       "           metric_params=None, n_jobs=1, n_neighbors=1, p=2,\n",
       "           weights='uniform')"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "knn.fit(X_train,y_train)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Predictions and Evaluations"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "predictions = knn.predict(X_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from sklearn.metrics import classification_report,confusion_matrix"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[109  43]\n",
      " [ 41 107]]\n"
     ]
    }
   ],
   "source": [
    "print(confusion_matrix(y_test,predictions))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "             precision    recall  f1-score   support\n",
      "\n",
      "          0       0.73      0.72      0.72       152\n",
      "          1       0.71      0.72      0.72       148\n",
      "\n",
      "avg / total       0.72      0.72      0.72       300\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print(classification_report(y_test,predictions))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Choosing a K Value\n",
    "\n",
    "A major part of building a ML model with KNN, is choosing a K value to improve the performance of our model. Let's go ahead and use the elbow method to do that.\n",
    "\n",
    "We will create a loop that trains various KNN models with different k values, then keep track of the error_rate for each of these models with a list."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "error_rate =[]\n",
    "for i in range(1,50):\n",
    "    knn = KNeighborsClassifier(n_neighbors=i)\n",
    "    knn.fit(X_train,y_train)\n",
    "    predictions = knn.predict(X_test)\n",
    "    error_rate.append(np.mean(predictions != y_test))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now, to make it easier to see what values of K had lower error rates, we'll create a plot using the information from our for loop."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.text.Text at 0x117dc6198>"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nSJYo4RIREREREckSJVwiIiIiIiJZooRLREREREQkS5RwiYiIiIiIZIkSLhERERERkSxRwiUiIiIi\nIpIlSrhERERERESyRAmXiIj0e6Zpvm+a5hXdPH6LaZox0zSne9EuEREpfAGvGyAiIpKPTNOcD8wE\nfmhZ1oNet0dERAqTEi4REZGdmKY5DyfZ+oFlWY963R4RESlcSrhERES2Y5rm74EzgSmWZdV43R4R\nESlsuodLRESkg2mac4ALgBuVbImIiBsM27a9boOIiIinTNN8HygBBgHrgAOAgyzL+sjThomISMHT\nFS4RERFHBTAeOAFoAf5imqa+J0VEJCP6IhEREXHMsyxrjWVZG4EZwNHAVR63SURECpwSLhEREUes\n8x+WZT0N3AZcbJrmaM9aJCIiBU8Jl4iISPd+BbwD3Gua5m5eN0ZERAqTEi4RERHoMoOUZVltwHRg\nCLA45y0SEZGioFkKRUREREREskRXuERERERERLJECZeIiIiIiEiWKOESERERERHJEiVcIiIiIiIi\nWaKES0REREREJEuUcImIiIiIiGSJEi4REREREZEsUcIlIiIiIiKSJUq4REREREREskQJl4iIiIiI\nSJYo4RIREREREcmS/x9P6JHt66DftgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1159e19e8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(10,6))\n",
    "plt.plot(range(1,50),error_rate,color='blue', linestyle='dashed', marker='o',\n",
    "         markerfacecolor='red', markersize=10)\n",
    "plt.title('Error Rate vs. K Value')\n",
    "plt.xlabel('K')\n",
    "plt.ylabel('Error Rate')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Looking at the plot,31 seems to be reasonable value for K. So let's retrain the model using that."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Retrain with new K Value"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "knn = KNeighborsClassifier(n_neighbors=31)\n",
    "knn.fit(X_train,y_train)\n",
    "predictions = knn.predict(X_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[123  29]\n",
      " [ 19 129]]\n",
      "             precision    recall  f1-score   support\n",
      "\n",
      "          0       0.87      0.81      0.84       152\n",
      "          1       0.82      0.87      0.84       148\n",
      "\n",
      "avg / total       0.84      0.84      0.84       300\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print(confusion_matrix(y_test,predictions))\n",
    "print(classification_report(y_test,predictions))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And voila! Our model performs better! \n",
    "\n",
    "This concludes this micro-project."
   ]
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python [default]",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
